package com.model.springmvc.handlers;

import java.io.IOException;
import java.util.HashMap;
import java.util.List;
import java.util.Map;

import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;

import jdk.nashorn.internal.ir.RuntimeNode;
import org.springframework.stereotype.Controller;
import org.springframework.ui.ModelMap;
import org.springframework.web.bind.annotation.*;
import org.springframework.web.servlet.ModelAndView;

@Controller
@RequestMapping(value={"com/page/springmvc"})
public class MVCHelloWorld {
	/**
	 * 1. 使用RequestMapping注解来映射请求的URL,支持正则表达式
	 * @RequestMapping(value={"/test1", "/user/create"})：多个URL路径可以映射到同一个处理器的功能处理方法。
	 * 2. 返回值会通过视图解析器解析为实际的物理视图, 对于InternalResourceViewResolver视图解析器，会做如下解析
	 * 通过prefix+returnVal+suffix 这样的方式得到实际的物理视图，然后会转发操作
	 * "/WEB-INF/views/success.jsp"
	 * prefix和suffix代表springmvc-servlet里面的配置，而returnVal代表跳转的name
	 * @return
	 */
	//注意：
	//相当于servlet3.0+中@WebServlet(value={"/IndexServlet"})注解，标识对应的url
	//method = {RequestMethod.POST, RequestMethod.GET} 表示既可以是POST,也可以是GET

	// ①@RequestMapping(params="create", method=RequestMethod.POST)
    //②表示请求中有“create”的参数名且请求方法为“GET”即可匹配，如可匹配的请求URL“http://×××/mvchelloworld?create”；
	//①@RequestMapping(params="submitFlag=create", method=RequestMethod.POST)表示请求中有“submitFlag=create”请求参数且请求方法为“post”即可匹配
	//②如请求URL为http://×××/mvchelloworld?submitFlag=create；
	//"@RequestMapping"的value值前后是否有“/”对请求的路径没有影响，即value="book" 、"/book"、"/book/"其效果是一样的。
	@RequestMapping(value={"/mvchelloworld"}) //也可以分一步写@RequestMapping(value={"com/page/springmvc/mvchelloworld"})
	public String hello(){
		System.out.println("mvc hello world");
		return "success";
	}


	/**
	 * handler method 参数绑定常用的注解,我们根据他们处理的Request的不同内容部分分为四类：（主要讲解常用类型）
	 *A、处理requet uri 部分（这里指uri template中variable，不含queryString部分）的注解：   @PathVariable;
	 *B、处理request header部分的注解：   @RequestHeader, @CookieValue;
	 *C、处理request body部分的注解：@RequestParam,  @RequestBody;
	 *D、处理attribute类型是注解： @SessionAttributes, @ModelAttribute;
	 *在传参里添加@RequestParam(value = "xxx",required = true)是跟 request.getParameter("xxx");是等价的
	 *例如：@RequestParam(value = "aac001",required = true) String aac001 == request.getParameter("aac001");
	 */
	@RequestMapping(value = {"/jqueryajax"}, method = RequestMethod.POST)

	public ModelAndView ajax(HttpServletRequest request,
							 @RequestBody List<String> map) {
		//String aac001_s = request.getParameter("aac001");
		//  String aac003_s = request.getParameter("aac003");
		// String  aac004_s = request.getParameter("aac004");
		//map.addAttribute("aaa","123");
		System.out.println("map:"+map);
		//  System.out.println("aac001:"+aac001);
		return null;
	}

}
